{% if isFramework("javascript") %}
```ts
interface IHeaderComp {
   // Optional method, gets called once with params
   init?(params: IHeaderParams): void;
   
   // Return the DOM element of your component, this is what the grid puts into the DOM
   // Can get called more than once
   getGui(): HTMLElement;
   
   // Gets called when a new Column Definition has been set for this header.
   // If you handle the refresh of your header return true otherwise return false
   // and the grid will re-create your header from scratch.
   refresh(params: IHeaderParams): boolean;
   
   // Gets called once by grid when the component is being removed; if your component needs to do any cleanup, do it here
   destroy?(): void;
}
```
{% /if %}
